﻿// Колесов 
using System;
using ComLaoBase;

namespace Transfer
{
    /// <summary> Класс обеспечивает доступ к параметрам предприятия.
    /// </summary>
    public class LaoFirm
    {
        /// <summary> Rcd (код) предприятия, на которое настроено LAO
        /// </summary>
        public int FirmRcd
        {
            get { return _firmRcd; }
        }
        private int _firmRcd;

        LAOBase _laoFirm;               // Список предприятий
        LAOBase _laoFirmSch;            // Список счетов предприятия

        public LaoFirm()
        {
            _laoFirm = LAO_DB.Open("TFirmObj", "Index_1");     // Rcd
            _laoFirmSch = _laoFirm.GetSubObject("TA_FirmSch"); // Список счетов предприятия
            _firmRcd = LAO_DB.GetFirmRcd();
        }

        public void Close()
        {
            _laoFirmSch.Close();
            _laoFirm.Close();
        }

        /// <summary> Получение Rcd счета по его номеру.
        /// При передаче пустого параметра возвращает номер первого счета в списке.
        /// </summary>
        /// <param name="sch">Номер счета</param>
        /// <returns>Rcd</returns>
        public int GetSchRcdByCode(string sch)
        {
            // В списке фирм найдем запись по известному коду фирмы
            if (!_laoFirm.Find(1, FirmRcd, 0, 0, 0, 0, 0, 0, 0, 0, 0))
                return 0;   // Не найдена         

            // Фирма нашлась, найдем Rcd указанного счета в списке ее счетов
            int rcd = 0;
            sch = sch.Trim();
            _laoFirmSch.First();
            // Если задан пустой номер счета, возвращаем Rcd первой записи. 
            // Т.е. первый встретившийся счет.
            if (!_laoFirmSch.IsEOO() && sch == string.Empty)
                return _laoFirmSch.GetInteger("Rcd");

            while (!_laoFirmSch.IsEOO())   // Перебираем счета
            {
                if (_laoFirmSch.GetString("Sch", "").Trim() == sch) // Счет найден.
                {
                    rcd = _laoFirmSch.GetInteger("Rcd");
                    break;
                }
                _laoFirmSch.Next();
            }
            return rcd;
        }
    }
}
